﻿Public Class clsTipoDomicilio
    Private id_Tipo As Integer
    Private NombreTipo As String
    Private Descripcion As String


    Public Property pid_Tipo() As Integer
        Get
            Return id_Tipo
        End Get
        Set(ByVal value As Integer)
            id_Tipo = value
        End Set
    End Property

    Public Property pDescripcion() As String
        Get
            Return Descripcion
        End Get
        Set(ByVal value As String)
            Descripcion = value
        End Set
    End Property
    Public Property pNombreTipo() As String
        Get
            Return NombreTipo
        End Get
        Set(ByVal value As String)
            NombreTipo = value
        End Set
    End Property


    'la siguiete propiedad es para los mensajes de error
    Private Msg As String
    Public Property pMsg() As String
        Get
            Return Msg
        End Get
        Set(ByVal value As String)
            Msg = value
        End Set
    End Property
    ' ver si usa
    Public Enum VerifExistType
        Ambos = 2
    End Enum


    Private dbConexion As clsConexion
    Public Sub New()
        dbConexion = New clsConexion
    End Sub
    Public Enum TipoQuery
        InfoTodo = 0
        InfoIndividual = 1
    End Enum

    Public dbDataRow As DataRow
    Public dbDataSet As DataSet

    Public Function fn_EjecutarQuery(ByVal Tipo As TipoQuery) As Boolean
        Try
            Dim EjecutarQuery As Boolean = False
            Dim SqlQuery As String
            If dbConexion.fn_abrir Then
                Select Case Tipo
                    Case TipoQuery.InfoIndividual
                        SqlQuery = " select * from TipoDomicilio " & _
                                   " where  id_Tipo = @id_Tipo"

                        dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)

                        dbConexion.dbcommand.Parameters.Add(New Data.SqlClient.SqlParameter("@id_Tipo", Data.SqlDbType.Int))
                        dbConexion.dbcommand.Parameters("@id_Tipo").Value = pid_Tipo

                        dbConexion.dbdataadapter = New SqlClient.SqlDataAdapter(dbConexion.dbcommand)

                        dbConexion.dbdataset = New DataSet
                        dbConexion.dbdataadapter.Fill(dbConexion.dbdataset, "TipoDomicilio")

                        If dbConexion.dbdataset.Tables.Count > 0 Then
                            EjecutarQuery = True
                            dbDataRow = dbConexion.dbdataset.Tables("TipoDomicilio").Rows(0)
                            dbConexion.dbdataadapter.Dispose()
                            dbConexion.dbdataset.Dispose()
                            dbConexion.dbcommand.Dispose()
                            dbConexion.su_cerrar()
                        Else
                            Msg = "Error al obtener la información del Tipo Domicilio."
                        End If
                    Case TipoQuery.InfoTodo
                        SqlQuery = " select * from TipoDomicilio"
                        dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)
                        dbConexion.dbdataadapter = New SqlClient.SqlDataAdapter(dbConexion.dbcommand)
                        dbConexion.dbdataadapter.Fill(dbConexion.dbdataset, "TipoDomicilio")
                        If dbConexion.dbdataset.Tables.Count > 0 Then
                            EjecutarQuery = True
                            dbDataSet = dbConexion.dbdataset.Copy()
                            dbConexion.dbdataadapter.Dispose()
                            dbConexion.dbdataset.Dispose()
                            dbConexion.dbcommand.Dispose()
                            dbConexion.su_cerrar()
                        Else
                            Msg = "Error al obtener la información de los Tipos de Domicilio."
                        End If
                End Select
            Else
                Msg = "No se pudo establecer la conexión con la base de datos."
            End If
            Return (EjecutarQuery)
        Catch ex As Exception
            Msg = "Ocurrio un problema al ejecutar la consulta." & vbCrLf & ex.Message
            Return (False)
        End Try
    End Function
    Public Function fn_ValidarDatos(ByVal Operacion As String) As Boolean
        Select Case Operacion
            Case "Add", "Upd"
                If Trim(NombreTipo) = "" Then
                    Msg = "Debe proporcionar el Nombre del Tipo Domicilio"
                    Return (False)
                End If
                If Trim(Descripcion) = "" Then
                    Msg = "Debe proporcionar la Descripción del Tipo Domicilio"
                    Return (False)
                End If
        End Select
        Return (True)
    End Function

    Public Function fn_Add() As Boolean
        Try
            Dim EjecucionOk As Boolean = False
            Dim SqlQuery As String

            If fn_ValidarDatos("Add") Then
                If dbConexion.fn_abrir Then
                    SqlQuery = " insert into TipoDomicilio(NombreTipo,Descripcion) " & _
                               " values(@NombreTipo,@Descripcion) "
                    dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)
                    With dbConexion.dbcommand
                        .CommandType = CommandType.Text
                        .Parameters.Add(New Data.SqlClient.SqlParameter("@NombreTipo", Data.SqlDbType.VarChar, 50))
                        .Parameters("@NombreTipo").Value = pNombreTipo()

                        .Parameters.Add(New Data.SqlClient.SqlParameter("@Descripcion", Data.SqlDbType.VarChar, 250))
                        .Parameters("@Descripcion").Value = pDescripcion


                        If .ExecuteNonQuery() > 0 Then
                            EjecucionOk = True
                            dbConexion.dbcommand.Dispose()
                            dbConexion.su_cerrar()
                        Else
                            Msg = "Se obtuvo errores al agregar el Tipo Domicilio."
                            EjecucionOk = False
                        End If
                    End With
                Else
                    EjecucionOk = False
                End If
            Else
                EjecucionOk = False
            End If
            Return (EjecucionOk)
        Catch ex As Exception
            Msg = "Error al agregar el Tipo Domicilio." & vbCrLf & ex.Message
            If dbConexion.dbconnection.State = ConnectionState.Open Then dbConexion.su_cerrar()
            Return (False)
        End Try
    End Function
    Public Function fn_Del() As Boolean
        Try
            Dim EjecucionOk As Boolean = False
            Dim SqlQuery As String
            If fn_ValidarDatos("Del") Then
                If dbConexion.fn_abrir Then
                    SqlQuery = " delete from  TipoDomicilio " & _
                               " where   id_Tipo=@id_Tipo"
                    dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)
                    With dbConexion.dbcommand
                        .CommandType = CommandType.Text
                        .Parameters.Add(New Data.SqlClient.SqlParameter("@id_Tipo", Data.SqlDbType.Int))
                        .Parameters("@id_Tipo").Value = pid_Tipo

                        If .ExecuteNonQuery() > 0 Then
                            EjecucionOk = True
                            dbConexion.dbcommand.Dispose()
                            dbConexion.su_cerrar()
                        Else
                            Msg = "Se obtuvo errores al eliminar el Tipo Domicilio"
                            EjecucionOk = False
                        End If
                    End With
                Else
                    EjecucionOk = False
                End If
            Else
                EjecucionOk = False
            End If
            Return (EjecucionOk)
        Catch ex As Exception
            Msg = "Error al eliminar el Tipo Domicilio." & vbCrLf & ex.Message
            If dbConexion.dbconnection.State = ConnectionState.Open Then dbConexion.su_cerrar()
            Return (False)
        End Try
    End Function

    Public Function fn_Upd() As Boolean
        Try
            Dim EjecucionOk As Boolean = False
            Dim SqlQuery As String
            If fn_ValidarDatos("Upd") Then
                If dbConexion.fn_abrir Then
                    SqlQuery = " update  TipoDomicilio " & _
                               " set NombreTipo = @NombreTipo,Descripcion=@Descripcion" & _
                               " where   id_Tipo = @id_Tipo"
                    dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)
                    With dbConexion.dbcommand
                        .CommandType = CommandType.Text
                        .Parameters.Add(New Data.SqlClient.SqlParameter("@NombreTipo", Data.SqlDbType.VarChar, 50))
                        .Parameters("@NombreTipo").Value = pNombreTipo

                        .Parameters.Add(New Data.SqlClient.SqlParameter("@Descripcion", Data.SqlDbType.VarChar, 250))
                        .Parameters("@Descripcion").Value = pDescripcion

                        .Parameters.Add(New Data.SqlClient.SqlParameter("@id_Tipo", Data.SqlDbType.Int))
                        .Parameters("@id_Tipo").Value = pid_Tipo


                        If .ExecuteNonQuery() > 0 Then
                            EjecucionOk = True
                            dbConexion.dbcommand.Dispose()
                            dbConexion.su_cerrar()
                        Else
                            Msg = "Se obtuvo errores al modificar el Tipo Domicilio."
                            EjecucionOk = False
                        End If
                    End With
                Else
                    EjecucionOk = False
                End If
            Else
                EjecucionOk = False
            End If
            Return (EjecucionOk)
        Catch ex As Exception
            Msg = "Error al agregar la Tipo Domicilio." & vbCrLf & ex.Message
            If dbConexion.dbconnection.State = ConnectionState.Open Then dbConexion.su_cerrar()
            Return (False)
        End Try
    End Function

    Public Function fn_Existe(ByVal TipoVerificacion As VerifExistType) As Boolean
        Try
            Dim Existe As Boolean = False
            Dim SqlQuery As String
            If dbConexion.fn_abrir Then

                Select Case TipoVerificacion
                    Case VerifExistType.Ambos
                        SqlQuery = " select * from TipoDomicilio " & _
                                   " where   NombreTipo = @NombreTipo"

                        dbConexion.dbcommand = New Data.SqlClient.SqlCommand(SqlQuery, dbConexion.dbconnection)

                        dbConexion.dbcommand.Parameters.Add(New Data.SqlClient.SqlParameter("@NombreTipo ", Data.SqlDbType.VarChar, 50))
                        dbConexion.dbcommand.Parameters("@NombreTipo").Value = pNombreTipo

                        dbConexion.dbcommand.CommandType = CommandType.Text
                        Msg = "El Tipo Domicilio no Existe."
                End Select

                dbConexion.dbdataadapter = New SqlClient.SqlDataAdapter(dbConexion.dbcommand)
                dbConexion.dbdataset = New DataSet
                dbConexion.dbdataadapter.Fill(dbConexion.dbdataset, "Tipo Domicilio")

                If dbConexion.dbdataset.Tables.Count > 0 Then
                    If dbConexion.dbdataset.Tables("Tipo Domicilio").Rows.Count > 0 Then
                        Existe = True
                        Msg = "El Tipo Domicilio Existe."
                    End If
                    dbDataSet = dbConexion.dbdataset.Copy()
                    dbConexion.dbdataadapter.Dispose()
                    dbConexion.dbdataset.Dispose()
                    dbConexion.dbcommand.Dispose()
                    dbConexion.su_cerrar()
                Else
                    Msg = "El  Tipo Domicilio no Existe."
                    Existe = False
                End If
            End If
            Return (Existe)
        Catch ex As Exception
            Msg = "Error al buscar si existe el Tipo Domicilio." & vbCrLf & ex.Message
            Return (False)
        End Try
    End Function


End Class
